#include "../include/TcpServerSocket.hpp"

TcpServerSock::TcpServerSock(const char* p_ip,int p_port)
{
    bzero(&m_listenSockAddr,sizeof(m_listenSockAddr));
    m_listenSockAddr.sin_family = AF_INET;
    m_listenSockAddr.sin_port = htons(p_port);
    inet_pton(AF_INET,p_ip,&m_listenSockAddr.sin_addr);

    m_sockfd = socket(AF_INET,SOCK_STREAM,0);
    assert(m_sockfd != -1);

    int ret = bind(m_sockfd,(sockaddr*)&m_listenSockAddr,sizeof(m_listenSockAddr));
    assert(ret >= 0);

    m_serverStop = false;
}

TcpServerSock::~TcpServerSock()
{
    close(m_sockfd);
}

void TcpServerSock::TcpListen(int p_maxListen)
{
    int ret = listen(m_sockfd,p_maxListen);
    assert(ret >= 0);

    printf("Start to listen..\n");
}

void TcpServerSock::MessageLoop(void)
{
    while(!m_serverStop)
    {
        Update();
    }
}

int TcpServerSock::SendMsg(const void  *pvBuf, size_t iLen,  int  iFlag)
{
    return ::send(m_sockfd,pvBuf,iLen,iFlag);
}

int TcpServerSock::RecvMsg(void  *pvBuf, size_t iLen,  int  iFlag)
{
    return ::recv(m_sockfd,pvBuf,iLen,iFlag);
}



